package com.designPattern.clone;

/**
 * 下面这个类实现了【浅拷贝】
 * 1.拷贝是按位拷贝对象，它会创建一个新对象，
 * 2.这个对象有着原始对象属性值的一份精确拷贝。
 *
 * 【拷贝数后据类型】
 * 1.如果属性是【基本类型】，拷贝的就是【基本类型的值】；
 * 2.如果属性是【内存地址（引用类型）】，拷贝的就是【内存地址】 ，
 *
 * 【重要】
 * 因此如果其中一个对象改变了这个地址，就会影响到另一个对象。
 */
public class Farm implements Cloneable{
    String farmName;
    Sheep sheep = new Sheep("多里",20);

    public Farm(String farmName) {
        this.farmName = farmName;
    }

    @Override
    public String toString() {
        return "Farm{" +
                "farmName='" + farmName + '\'' +
                ", sheep=" + sheep +
                '}';
    }
    @Override
    protected Object clone() throws CloneNotSupportedException {
        Farm farm = (Farm) super.clone();
        return farm;
    }
}
